1. Field of the Invention
This invention relates to graphics systems and, more particularly, to graphics systems capable of supporting multiple display streams or channels.
2. Description of the Related Art
A computer system typically relies upon its graphics system for producing visual output on the computer screen or display device. Early graphics systems were only responsible for taking what the processor produced as output and displaying it on the screen. In essence, they acted as simple translators or interfaces. Modem graphics systems, however, incorporate graphics processors with a great deal of processing power. They now act more like coprocessors rather than simple translators. This change is due to the recent increase in both the complexity and amount of data being sent to the display device. For example, modern computer displays have many more pixels, greater color depth, and are able to display more complex images with higher refresh rates than earlier models. Similarly, the images displayed are now more complex and may involve advanced techniques such as anti-aliasing and texture mapping.
As a result, without considerable processing power in the graphics system, the CPU would spend a great deal of time performing graphics calculations. This could rob the computer system of the processing power needed for performing other tasks associated with program execution and thereby dramatically reduce overall system performance. With a powerful graphics system, however, when the CPU is instructed to draw a box on the screen, the CPU is freed from having to compute the position and color of each pixel. Instead, the CPU may send a request to the video card stating, xe2x80x9cdraw a box at these coordinates.xe2x80x9d The graphics system then draws the box, freeing the processor to perform other tasks.
Generally, a graphics system in a computer is a type of video adapter that contains its own processor to boost performance levels. These processors are specialized for computing graphical transformations, so they tend to achieve better results than the general-purpose CPU used by the computer system. In addition, they free up the computer""s CPU to execute other commands while the graphics system is handling graphics computations. The popularity of graphics applications, and especially multimedia applications, has made high performance graphics systems a common feature in many new computer systems. Most computer manufacturers now bundle a high performance graphics system with their computing systems.
In many applications, it may be useful to have two monitors or displays connected to the same computer system. For example, in some graphical editing applications, it is desirable to use one monitor to show a close-up of an area being edited, while another monitor shows a wider field of view of the object or picture being edited. Alternatively, some users may configure one monitor to display the object being edited and the other monitor to display various palettes or editing options that can be used while editing. Another situation where multiple displays are useful occurs when several users are connected to a single computer. In such a situation, it may be desirable for each user to have their own display. In another situation, it may simply be desirable to have multiple displays that each display a different portion of an image in order to provide a larger display than would otherwise be possible. Another example is stereo goggles, which present different images to their wearer""s left and right eyes in order to create a stereo viewing effect. These examples illustrate just a few of the many situations where it is useful to have multiple displays connected to the same computer system.
Given the complexity and expense of many graphics systems, it may be desirable to provide a graphics system that can support two displays without duplicating the entire graphics system. Thus, there is a need to be able to share portions of a graphics system between multiple display channels.
Various embodiments of a graphics system that supports multiple display channels and a method that may be used to share a graphics system between multiple display channels are disclosed. In one embodiment, a graphics system including a frame buffer, an arbiter, and two pixel output buffers is disclosed. The frame buffer is divided into a first and a second portion. The arbiter arbitrates between the display channels"" requests for display information (e.g., pixels or samples) from the frame buffer and selects a request to forward to the frame buffer. The arbiter alternates display channel requests for data between the first and second portions of the frame buffer. The frame buffer is configured to output display information in response to receiving the selected request for display information, and pixels corresponding to this display information are stored in the output buffers. The arbiter selects which request to forward to the frame buffer based on a relative state of neediness of each of the requesting display channels.
The graphics system may include a plurality of requesters that each correspond to one of the display channels and that are each configured to assert requests for their corresponding display channels. For example, each requester may be configured to assert requests during the time period beginning just before the end of a first vertical blanking interval and ending just before the beginning of the next vertical blanking interval for its corresponding display channel.
In some embodiments, the arbiter may be configured to select one of the pixel requests by determining which channel was least recently serviced, and if data for that channel is available in one of the pixel output buffers, selecting that channel""s pixel request. If data for the least recently serviced channel is not available in the pixel output buffer and data for the next least recently serviced channel is available in one of the pixel output buffers, the pixel request arbiter may select the pixel request corresponding to the next least recently serviced channel.
In some embodiments, the graphics system may support multiple CRT monitors, digital displays, gas-plasma displays, television monitors, or combinations of these or other displays.
In one embodiment, a method of sharing graphics systems resources between a plurality of display channels is disclosed. The method includes: asserting a plurality of first requests for display information (e.g., pixels or samples), wherein each request corresponds to one of the display channels; arbitrating between the requests by selecting and forwarding one of the requests; outputting display information in response to the selected request being forwarded; asserting a plurality of second requests for pixels, wherein each second request corresponds to one of the display channels; arbitrating between the second requests by selecting and forwarding one of the second requests; and outputting a one or more pixels in response to the selected second request being forwarded.
In another embodiment, a graphics system is disclosed. The graphics system includes a plurality of display information requesters that each correspond to one of a plurality of display channels and are each configured to output a request in response to an indication of the corresponding display channel""s actual display information needs. In some embodiments, the indication of the corresponding display channel""s needs may be the current level of data in a buffer or queue for the display channel or the status of the display channel (e.g., whether the channel is about to begin or end a vertical blanking interval). The graphics system also includes a display information buffer configured to store display information and to output a portion of the display information to one of the display channels in response to receiving a selected request corresponding to one of the display channels. The system includes arbitration logic configured to receive requests from the display information requesters, to select one of the requests, and to forward the selected request to the display information buffer.